/**
 * 附件上传-前端工具类
 * @author4 xhe 2016-04-01 v1.3
 * 			只是优化upLoad方法，在选择完文件后自动触发上传，减少点击成本（隐藏之前的点击上传按钮）。
 * @author3 xhe 2015-12-20 v1.2
 *          新增有实体简单版上传，补充返回文件选择框中原文件名称。定义html元素fileNameOld，如：span
 *          id="fileUpText_1_fileNameOld"
 * @author2 xhe 2015-11-10 v1.1 补充服务端、有实体、easyui版 上传的相关方法
 * @author1 xhe 2015-10-10 v1.0 补充客户端、无实体、简单版 上传的相关方法
 */
var fileNameOld = '';
var fno = '';
(function($) {
	$.zbxupload = {
		upload : function(_1) {
			upLoad(_1);
		},// 上传元素加载方法
		uploadSubmit : function(_2) {
			uploadSubmit(_2);
		},// 上传提交
		uploadEntityEasyui : function(_3) {
			uploadEntityEasyui(_3)
		},// 有实体、easyui版附件上传
		loadEntityAttas : function(_4) {
			loadEntityAttas(_4)
		},// 有实体、easyui版附件列表信息获取
		delEntityAttas : function(_5) {
			delEntityAttas(_5)
		},// 有实体、、easyui版删除附件信息
		uploadEntity : function(_6) {
			uploadEntity(_6)
		}// 有实体、简单版附件上传
	};

	/**
	 * 添加上传表单、相关按钮等元素
	 */
	function upLoad(_1) {
		// 1.检验元素
		if ($("#uploadIframe").length < 1) {
			alert("本页面未添加uploadIframe元素");
			return;
		}
		;
		if ($("#uploadIframeDefDiv").length < 1) {
			alert("本页面未添加uploadIframeDefDiv元素");
			return;
		}
		;
		if (document.domain.indexOf(_1.attaDomain, 0) < 0) {
			alert("当前访问域[" + document.domain + "]不包含所配置的domain["
					+ _1.attaDomain + "]");
			return;
		}
		;

		// 2.初始化对象
		var divObj = $("#uploadIframeDefDiv");
		var idname = "fileUpText_" + _1.fileNum;
		fno = _1.fileNum;
		var picStoreAction = _1.attaServerUrl;// 设置上传地址
		document.domain = _1.attaDomain;// 设置域

		// alert(divObj+"|"+idname+"|"+_1.fileNum+"|"+picStoreAction+"|"+document.domain+"|"+_1.attaDomain);

		// 3.防止重复，先清空相关元素
		divObj.html("");
		$("#uploadMediaDefForm").remove();
		$("#" + idname + "_a").text("");
		$("#" + idname + "_msg").html('');

		var str = "<form target='uploadIframe' id='uploadMediaDefForm' name='uploadMediaDefForm' action='" + picStoreAction + "' method='POST' enctype='multipart/form-data'>";
		str += "<input type='hidden' name='callback' value='myDis'/><input type='hidden' name='tokenId' value='"+ _1.tokenId + "'/>";
		str += "<input type='hidden' id='idname' name='idname' value='" + idname + "'/>";
		str += "<input type='file' name=\"upload\" style='opacity: 0;filter:alpha(opacity=0);-moz-opacity:0;' id='uploadFileInput'/>";
		str += "<input type='hidden' id='upload_fileTypes' name='upload_fileTypes' value='"+ _1.fileTypes + "'/>";
		str += "<input type='hidden' id='upload_fileNum' name='upload_fileNum' value='"+ _1.fileNum + "'/>";
		
		// 4.根据不同浏览器添加上传form的html元素
		if ($.browser.msie) { // 如果是IE内核浏览器
			str += "</form>";
			divObj.html(str);
		} else { // 其他浏览器
			divObj.append(str);
			divObj.append("</form>");
		}
		
		// 5.给上传的file按钮添加内容变化change事件；
		$(document).delegate('input[id="uploadFileInput"]', 'change', function() { 
			
			//5.1先验证是否满足允许的文件类型
			if(!checkFileTypes(idname))return;
			//5.2隐藏同级区域里面的选择文件的按钮
			//$("#" + idname + "_subbtn").parent().find('label[for="uploadFileInput"]').hide();
			//5.3触发上传按钮点击事件；
			//$("#" + idname + "_subbtn").show();
			$("#" + idname + "_subbtn").click();
		});
		
		// 6.显示其他按钮
		//$("#" + idname + "_subbtn").show();
		// alert(divObj.html());
	}
	//校验文件类型
	function checkFileTypes(idname){
		var fileTypes = $('#upload_fileTypes').val();
		if(fileTypes=="undefined" || fileTypes==""){
			$("#" + idname + "_msg").text("*未设置文件类型参数");
			return false;
		}
		var fileNamePath = $('#uploadFileInput').val();
		if(fileNamePath==undefined || fileNamePath==""){
			$("#" +idname+ "_msg").text("*未选择文件");
			return false;
		}
		if(fileTypes.indexOf(getFileType(fileNamePath))<0){
			$("#" +idname+ "_msg").text("*只允许上传以（"+fileTypes+"） 结尾的文件");
			return false;
		}
		return true;
	}
	//获取文件名称
	function getFileName(tValue){  
		var t1 = tValue.lastIndexOf("\\");  
		return tValue.substring(t1 + 1);  
	} 
	//获取文件后缀类型
	function getFileType(tValue){  
	   var t1 = tValue.lastIndexOf(".");  
	   return tValue.substring(t1 + 1);  
	}

	/**
	 * 开始上传提交
	 */
	function uploadSubmit(_2) {
		var uploadP = $("#uploadFileInput");
		if (!uploadP || uploadP.val() == null
				|| $.trim(uploadP.val()).length == 0) {
			alert("请选择文件！");
			return;
		} else {
			var filePath = uploadP.val();
			var iof = filePath.lastIndexOf('\\');
			fileNameOld = filePath.substring(iof + 1, filePath.length);
			// 表单提交
			// if($.browser.msie) {
			$("#uploadMediaDefForm").submit();
			// }else{
			// document.getElementById("uploadMediaDefForm").submit();
			// }
		}
	}

	// 有实体、easyui版 打开附件上传页面
	function uploadEntityEasyui(_t) {
		var upObjId = _t.upiframeId;
		var upObjDivId = _t.upiframeDivId;
		var ctx = _t.attachServerUrl;
		var objId = _t.objId;
		var objType = _t.objType;

		var upObj = $('#' + upObjId);
		upObj.html('');
		var url = ctx + '/attachment/store/add.action?objId=' + objId
				+ '&objType=' + objType + '&d=' + new Date().getTime();
		upObj.attr("title", '附件上传');
		upObj.attr("src", url);
		$('#' + upObjDivId).window('open');
	}
	// 有实体、easyui版 加载附件信息列表页面
	function loadEntityAttas(_t) {
		var ctx = _t.attachServerUrl;
		var objId = _t.objId;
		var objType = _t.objType;
		var resultsId = _t.resultDivId;
		// alert(ctx+"-"+objId+"-"+objType+"-"+resultsId+"-");
		$.ajax({
			url : ctx + '/attachment/store/list!data.action',
			type : 'POST',
			cache : false,
			data : 'objId=' + objId + '&objType=' + objType + '&attaSort=1',
			success : function(data) {
				$('#' + resultsId).html(data);
			}
		});
	}
	// 有实体、easyui版 删除上传附件
	function delEntityAttas(_t) {
		var ctx = _t.attachServerUrl;
		var id = _t.attaId;
		var title = _t.title;
		$.messager.confirm('确认', '您确定要删除文件:<font color=red>' + title
				+ '</font> 吗？', function(r) {
			if (r) {
				$.ajax({
					type : 'post',
					url : ctx + '/attachment/store/del.action',
					data : 'id=' + id + '&attaSort=1',
					dataType : 'json',
					success : function(data) {
						if ("T" == data.flag) {
							$.messager.alert("删除结果", data.msg, "info");
							loadAttas();
						} else {
							$.messager.alert("删除结果", data.msg, "error");
							loadAttas();
						}
					},
					error : function() {
						$.messager.alert("删除结果", "未知异常", "error");
					}
				});
			}
		});
	}

	function uploadEntity(_t) {
		// 1.检验元素
		if ($("#uploadIframe").length < 1) {
			alert("本页面未添加uploadIframe元素");
			return;
		}
		;
		if ($("#uploadIframeDefDiv").length < 1) {
			alert("本页面未添加uploadIframeDefDiv元素");
			return;
		}
		;
		if (document.domain.indexOf(_t.attaDomain, 0) < 0) {
			alert("当前访问域[" + document.domain + "]不包含所配置的domain["
					+ _t.attaDomain + "]");
			return;
		}
		;

		// 2.初始化对象
		var divObj = $("#uploadIframeDefDiv");
		var idname = "fileUpText_" + _t.fileNum;
		fno = _t.fileNum;
		var picStoreAction = _t.attaServerUrl
				+ "attachment/files/uploadAttachmentFile.action?isRemote=T";// 设置上传地址
		document.domain = _t.attaDomain;// 设置域

		// alert(divObj+"|"+idname+"|"+_t.fileNum+"|"+picStoreAction+"|"+document.domain+"|"+_t.attaDomain);

		// 3.防止重复，先清空相关元素
		divObj.html("");
		$("#uploadMediaDefForm").remove();
		$("#" + idname + "_a").text("");
		$("#" + idname + "_msg").html('');

		var str = "<form target='uploadIframe' id='uploadMediaDefForm' name='uploadMediaDefForm' action='"
				+ picStoreAction
				+ "' method='POST' enctype='multipart/form-data'>";
		str += "<input type='hidden' name='callback' value='myDis'/>";
		str += "<input type='hidden' id='idname' name='idname' value='"
				+ idname + "'/>";
		str += "<input type='file' name=\"file\"  style='opacity: 0;filter:alpha(opacity=0);-moz-opacity:0;' id='uploadFileInput'/>";
		str += "<input type='hidden' name='sid' id='sid' value='" + _t.sid
				+ "'/>";
		str += "<input type='hidden' name='objId' value='" + _t.objId + "'/>";
		str += "<input type='hidden' name='objType' value='" + _t.objType
				+ "'/>";

		// 4.根据不同浏览器添加上传form的html元素
		if ($.browser.msie) { // 如果是IE内核浏览器
			str += "</form>";
			divObj.html(str);
		} else { // 其他浏览器
			divObj.append(str);
			divObj.append("</form>");
		}
		// 5.显示其他按钮
		$("#" + idname + "_subbtn").show();
		// alert(divObj.html());
	}

})(jQuery);

/**
 * 回调函数（注意，被引入页面最好别又此函数方法）
 */
function myDis(id, flag, msg, murl) {
	// alert(id+"|"+flag+"|"+msg+"|"+murl);
	if (flag == "T") {
		$("#" + id).val(murl);
		$("#" + id + "_a").attr('href', murl);
		$("#" + id + "_a").text("点击预览");
		$("#" + id + "_msg").html('上传完成');
		$("#" + id + "_subbtn").prev().text("重新上传").show();//拷贝紧邻的前一个同胞元素；
		//$("#" + id + "_subbtn").hide();//
		$("#" + id + "_fileNameOld").text(fileNameOld);
		myBack();// 被集成的页面自己添加
		$("#" + id + "_showImg").attr("src", murl);
		$("#" + id + "_sid").val(msg);
		$("#" + id + "_addItem").show();
		$("#" + id + "_changebtn").text("重新上传");
	} else {
		alert(msg);
	}
}
